異常用於處理合約中的錯誤情況,可以幫助開發人員更好地調試和管理錯誤,有三種異常處理機制。
Error 是 Solidity 0.8.4 版本中引入的新特性,用於向用戶解釋操作失敗的原因。它可以攜帶參數,幫助開發人員更好地調試,可以在合約之外定義錯誤。
例如,定義一個名為 TransferNotOwner 的錯誤,當用戶不是代幣的所有者嘗試轉帳時,就會拋出該錯誤。錯誤需要與 revert 命令一起使用,這種方法對於高效地省 gas 很有幫助。
require 命令是 Solidity 0.8 版本之前使用的異常處理機制。它仍然廣泛使用,但隨著描述異常的字符串長度增加,它的 gas 成本會上升。
require 命令用於檢查條件,如果條件不成立,就會拋出異常並提供一個錯誤描述,這是一種常見的異常處理方法。
assert 命令主要用於程序員調試目的,因為它不提供異常原因的描述。